<!doctype html>
<!--
Copyright 2015 Google Inc. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="description" content="Sample illustrating the use of spread calls.">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Spread Operator Sample</title>

    <!-- Add to homescreen for Chrome on Android -->
    <meta name="mobile-web-app-capable" content="yes">
    <link rel="icon" sizes="192x192" href="../images/touch/chrome-touch-icon-192x192.png">

    <!-- Add to homescreen for Safari on iOS -->
    <meta name="apple-mobile-web-app-title" content="Spread Operator Sample">

    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" href="../images/apple-touch-icon-precomposed.png">

    <!-- Tile icon for Win8 (144x144 + tile color) -->
    <meta name="msapplication-TileImage" content="../images/touch/ms-touch-icon-144x144-precomposed.png">
    <meta name="msapplication-TileColor" content="#3372DF">

    <link rel="icon" href="../images/favicon.ico">

    <link rel="stylesheet" href="../styles/main.css">
  </head>

  <body>
    <h1>Spread Operator Sample</h1>

    <p>Available in <a href="https://www.chromestatus.com/feature/6031334694715392">Chrome 46+</a></p>

    <!-- // [START code-block] -->
    <p>
      ES6’s spread operator “<code>...</code>” expands expression
      <em>in-place</em> and can be applied to function arguments or array
      expressions.
    </p>
    <p>
      For now, this feature is behind Chrome’s “Experimental JavaScript” flag,
      which can be enabled by browsing to <code>chrome://flags/#enable-javascript-harmony</code>.
    </p>
    <div class="output">
        <pre id="log"></pre>
    </div>
    <!-- // [START code-block] -->
    <script>
    "use strict";

    function log() {
        document.querySelector('#log').textContent += Array.prototype.join.call(arguments, '') + '\n';
    }


    function saySentence(subject, predicate, object) {
      log(subject, predicate, object);
    }

    var sentence = ['Chrome', 'is surfing', 'the modern web'];
    // The following two function calls are equivalent
    // ES5:
    saySentence.apply(null, sentence);
    // ES6:
    saySentence(...sentence);

    // Destructuring an array is now possible
    var [subject, ...remainder] = sentence;
    log(subject, remainder);

    // ... as well as making array literals and push() more powerful
    var newSentence = [...sentence, 'fast'];
    var additions = ['and', 'secure'];
    newSentence.push(...additions);
    log(newSentence);

    </script>
    <!-- // [END code-block] -->

    <script>
      /* jshint ignore:start */
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
      ga('create', 'UA-53563471-1', 'auto');
      ga('send', 'pageview');
      /* jshint ignore:end */
    </script>
    <!-- Built with love using Web Starter Kit -->
  </body>
</html>
